// 题目要求：
// 计算两个字符串 s 和 t 之间的最短编辑距离，
// 可以增加一个字符，删除一个字符，也可以替换一个字符
// 每操作一次增加一次操作数

// 解题思路：
// 经典的动态规划问题
// dp[i][j] 表示 s 的 [0, i] 区间，t 的 [0, j] 区间，中 s 转化为 t 的最短编辑距离
// 如果 s[i] == t[j]，dp[i][j] = dp[i - 1][j - 1]
// 如果 s[i] != s[j]，分三种情况讨论：
// 给 s[i] 后面增加一个字符 t[j]：dp[i][j] = dp[i][j - 1] + 1
// 给 s[i] 删除最后一个字符s[i]：dp[i][j] = dp[i - 1][j] + 1
// 给 s[i] 最后一个字符替换为 t[j]：dp[i][j] = dp[i - 1][j - 1] + 1
// 这三种情况取最小值

import java.util.*;

public class EditionDistanceOfString {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        char[] s = in.next().toCharArray();
        char[] t = in.next().toCharArray();

        int m = s.length; int n = t.length;

        int[][] dp = new int[m + 1][n + 1];

        for(int i = 0; i <= m; i++){
            dp[i][0] = i;
        }

        for(int j = 0; j <= n; j++){
            dp[0][j] = j;
        }

        for(int i = 1; i <= m; i++){
            for(int j = 1; j <= n; j++){
                if(s[i - 1] == t[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1];
                }else{
                    dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1])) + 1;
                }
            }
        }

        System.out.println(dp[m][n]);
    }
}
